[JSDC 2020] 參與心得

前言

上週參加今年JavaScript 開發者年會(JavaScript Developer Conference; 簡稱JSDC),其實這是第一次參加,去年原本有想報,結果錯過報名時間…….

回歸正題,本次 JSDC 的所有議程中主要想聽是關於:遠端工作以及導入 TypeScript 相關議題

以下列舉參加其中幾場的分享及心得

Topic: Remote Team

Speaker: TonyQ (王景弘)

這場的講者是大名鼎鼎的 TonyQ !

TonyQ 在本次議程中,以假設在被迫遠端(或面試需要遠端)的情況下,從三個面向來討論遠端工作

原因

為何要Remote?

TonyQ 以自身及所聞周遭的遠端工作者經驗來討論會 Remote 的理由:

  • 工作型態:本身可能是SOHO族,以接案的形式工作,客戶本身並不關心自己在哪裡工作,對方提出需求,你提供產出,只需要定期開會(or 碰面)確認進度,確保能夠有產出。
  • 交通因素: 通勤時間過長,乾脆在家工作,遠比通勤所花的時間來的有效益
  • 時間因素: 自身工作內容比較特殊,如:管伺服器 or 系統的人,因為系統可能在離峰時間、非正常上班時間出事,需要On-call 遠端維護主機
  • 空間因素: 團隊分散在各地,辦公室有多個點,大家不在同一個空間,若要實體討論,花費的時間、金錢的成本過高,若透過數位工具,可以幫助團隊省下這部分的成本
  • 家庭/健康因素: 家裡臨時需要協助,e.g. 家人有突發狀況、COVID-19

講者表示能夠面對面溝通很好,也喜歡隨時進入工作狀態,不用費盡心思出門到辦公室工作,隨時與團隊夥伴保持聯繫。

而遠端工作對於 TonyQ 來說,是一種工作方法,不同的工作方法,要用不同的態度來處理,想要上手遠端工作,需具備幾項條件:

  • 自我管理
  • 團隊整體對目標有一定的共識(避免大家看起來做同一件事情,卻分道揚鑣的窘境)

接著以管理者的身份來分享自己在管理 Remote Team 的經驗

個人

先找總機

有一個統一的管道可以讓團隊成員去問問題,作為主要的溝通窗口

  • Line
  • Slack
  • Teams

建環境

由於遠距工作倚賴數位溝通,會需要一些其他工具

  • VPN: 連進公司內網
  • Git Repo
  • Security Guide

確認必須的行政邏輯

  • 工時
  • 請假
  • afk (away from keyboard)
  • 團隊工作時間確認必須的行政邏輯

確認任務分配模式

  • issue tracking
  • Redmine
  • Trello
  • Teams
  • PM / 主管
  • 同事

溝通討論

公私分明,討論完後再把結論填回 issue treacking

  • PR & Code Review
  • 使用 Azure DevOps
  • 先 push 到其他 branch 發 PR,code review 後再 merge

concall/電話

  • Teams 可以在 pure web 完成分享螢幕、通訊
  • 在家工作建議準備可工作的書房或空間

管理者

情感

遠端還是要做 Team Building

  • 避免部屬與上司相互猜測彼此工作狀況

有沒有人最近少講話或情緒不太穩定

  • 關照情緒需要電話或者見面了解

規劃

盡量用文字而少用電話,安排要減少情緒。

進度問題

  • 傳統叫下屬交工作報告
  • 用 Readmine 查看活躍度,查看 commit 花費時間和紀錄

新人文件一定要寫

  • 幫助新人融入團隊最快的方法
  • 不用太精緻,txt 也行

同仁已讀不回怎麼辦

  • 把工作交付他人(對同仁的處罰)

SOS 怎麼處理

  • 有排人值班 oncall,用電話溝通

如何避免重工

  • 避免里長伯類型的同仁
  • 明確指派任務
  • SOS人員無法解決時應向上呈報

技能落差

  • 要死線前才發現無法完成
  • 要派有技術的人 watch,定時 commit 記錄落後派人去盯
  • 不用全部都盯,盯重要 issue 就好

開會模式

  • 不開大會,開小組會

同仁不適應怎辦

  • 用主管權利引導他,定期 tag 同仁回復討論,通常要嘛他適應,要嘛他走

建議原則:

  • 高響應
    • 定期 keep alive
    • 對於新人,可以要求指定時間回報狀況
  • 高容錯
    • 對於文字多思考可能的意思
    • 溝通需要更多的容錯
    • 盡可能有第三個人在場 (避免 1v1 單人聊天)-讓其他人也知道狀態,避免雙方認知有落差,此時有第三方可以幫忙作證
  • 高產出
    • 工作不要排滿,七八分就好,排滿很危險

禁忌:

  • 忌消失
  • 忌不懂裝懂
  • 忌缺確認
  • 忌追殺 (除非 SOS)

總結

團隊需要定期更新目標,落實目標管理,走在正確的方向

Topic: 本科 / 遠端 / 新創 經驗分享

Speaker: 邱弘毅 (沒一村)
講者有在經營粉專 - 沒一村隨便說,接著回答幾個大家都會問的問題

本科 vs 研究所

很多人必須面對的課題: 考研? or 工作?
講者提到可以先想理想工作是什麼

理想工作

  • IC 半導體 vs 軟體工程師
    • 台灣 IC 半導體一定要唸碩士(門檻)
  • Data Engineer vs software engineer
  • 研究 vs 開發
    以Software Engineer 來說,因為本身都是做開發,不ㄧ定要唸研究所

國內 vs 國外研究所

  • 國內: 研究、修課
  • 國外: 修課
    • 如果有想要國外工作,可以念國外研究所

機會成本

對講者來說,機會成本是非常重要的,比較下面兩個

  • 本科直接工作:累積兩年工作經驗 + 薪水
  • 研究所: 得到更多 domain specific 研究經驗

兩者要做取捨,這就回到自己本身的理想工作是什麼?

遠端工作

講者目前的公司位於美國,團隊的開發者也都是四散在各地,簡單跟大家分享近一年的遠端工作心得

遠端工作疑問

如何找到工作?

能力需求?

  • 英文 or 外文:能夠溝通,聽說讀寫據基本能力。
  • 自制力:對遠端工作者是必須具備的能力
  • 自學能力
  • 溝通能力

優缺點?

  • 優點:時間彈性、減少通勤時間、效率高
  • 缺點: 容易超時工作、缺少和同事交流

Topic: 用不用 TypeScript 隨便你,反正我是用了

Speaker: Will 保哥
保哥本次想討論的主題是為何要使用TypeScript,用了有什麼好處?

什麼是 TypeScript?

TypeScript 由微軟開發,主要提供 JavaScript 型別系統和對 ES6 的支援,屬於強型別。

因為 TypeScript 誕生得主因是 JavaScript 本身是弱型別語言,在撰寫上非常自由,不需事先定義好資料型別。
不過也因為風格自由,可能倒置程式執行時,發生不可預期之錯誤。舉例來說:

以下圖片取自保哥的簡報


上述範例可以看出,因為未事先宣告資料型別,所以在執行 processData 這個函式時,無法得知街道的物件data會是什麼,接著執行函式內邏輯時,出現TypeError這項型別錯誤的提示訊息,只要打錯字,這支程式基本上就掛了。

若轉成 TypeScript


上述保哥所舉得範例,左邊預先定義一個Interface,宣告Data這個物件的屬性包含三種型別。

而下方的錯誤訊息來自IDE的提示,很貼心的提示你可能發生的問題。

講者觀點:

弱型別並非沒有,還是有些大神可以把他玩到極致,產出如同藝術家般的作品,但是對一般人來說是很難做到;而強型別玩到極致,如同蓋大樓,藉由大量型別的定義,幫助開發者建構中大型的專案,在實際案例中,不可能所有開發者都是藝術家級別。

透過規範來幫助開發者建構出易維護、擴充的程式碼,減少錯誤。

TypeScript 是透過型別來擴充 JavaScript,透過編譯的方式來產生 JavaScript,而 TypeScript 的型別檢查是發生在程式編譯的階段

好處: 讓開發工具看懂原始碼

後續保哥分享了他在公司將一個兩萬行JS Code 的專案升級成 TypeScript,過程中發現型別的問題非常大,花費不少時間做Complie Error,陸續將可被規範的物件,定義出該有的樣子,同時也提到導入 TypeScript 的確會增加開發時間,畢竟要先定義好型別,不過放長遠來想,或許是個值得投資的項目。

後記

感謝 ALPHA Camp 活動贊助,以優惠價取得門票,有幸參與今年JSDC研討會,實屬難得的機會。

Comments